package com.wh.wisdomsite.xbox.server.util;

import com.wh.wisdomsite.xbox.common.Constants;
import com.wh.wisdomsite.xbox.common.reponse.CommonResult;
import com.wh.wisdomsite.xbox.common.util.XboxSign;
import com.wh.wisdomsite.xbox.utils.StringUtils;
import com.wh.wisdomsite.xbox.utils.json.JsonUtil_Google;
import com.wh.wisdomsite.xbox.utils.properties.PropertiesToolMgr;
import com.wh.wisdomsite.xbox.utils.server.connToserver_HttpClientClose;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.HashMap;
import java.util.Map;

/**
 * XboxUtils工具类,发送请求
 * @Package com.wh.wisdomsite.xbox.server.util
 * @author 谢泽鹏
 * @date 2014年10月8日 下午4:02:14
 * @Copyright 个人版权所有
 * @Company 贵州万华科技有限公司Copyright (c) 2014
 * @version V1.0
 */
public class XboxUtil {


    private static final Log logger = LogFactory.getLog(XboxUtil.class);


    /**
     * 发起请求
     * @param method     请求方法
     * @param sessionId  会话标识
     * @param bindObject 绑定参数
     * @return
     */
    public CommonResult post(String method, String sessionId, String bindObject){
        CommonResult commonResult = new CommonResult();
        String url = null;
        try{
            //初始化Map
            Map<String, String> map = new HashMap<String, String>();
            //加载属性文件
            ClassLoader classLoader = XboxUtil.class.getClassLoader();
            //服务路径
            PropertiesToolMgr.setFileName("server.properties");
            //加载属性文件
            PropertiesToolMgr.initProperties(classLoader);
            Constants.WEATHER_URL = PropertiesToolMgr.getPropertiesByKey("WEATHER.URL");
            //请求路径
            url = Constants.WEATHER_URL + "/service";
            PropertiesToolMgr.setFileName("zsd.properties");
            PropertiesToolMgr.initProperties(classLoader);
            //请求秘钥
            Constants.ZSD_COMPANY_SERVER_MESSAGE_PASSWORD = PropertiesToolMgr.getPropertiesByKey("zsd.company.server.message.password");
            //应用平台(固定参数)
            map.put("client", "WH_APP");
            //应用KEY(固定参数)
            map.put("appKey", "weather");
            //数据格式(固定参数)
            map.put("format", "json");
            //服务方法(指定配置)
            map.put("method", method);
            //服务版本(固定参数)
            map.put("version", "1.0");
            //会话标识(业务参数)
            map.put("sessionId", sessionId);
            //业务参数()
            map.put("bindObject", bindObject);
            //调用类型(默认指定)
            map.put("callType", "PC");
            //调用版本(默认指定)
            map.put("callVersion", "1.0.0");
            //签名秘钥(签名规则)
            map.put("sign", XboxSign.signRule(map, Constants.ZSD_COMPANY_SERVER_MESSAGE_PASSWORD));
            //发送请求
            String result = connToserver_HttpClientClose.sendPostRequest(url, map, null);
            if(StringUtils.isEmpty(result)){
                commonResult.setCode(Constants.CODE_FAIL);
                commonResult.setMessage("请求通信[" + url + "]时出现异常");
                return commonResult;
            }
            commonResult = (CommonResult) JsonUtil_Google.getGsonObjectByObject(result, CommonResult.class);
        } catch (Exception e){
            e.printStackTrace();
            logger.error("请求通信[" + url + "]时出现异常" + connToserver_HttpClientClose.getException(e));
        }
            return commonResult;

    }
}
